{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "%matplotlib inline\n",
    "plt.style.use('ggplot')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.base import BaseEstimator, TransformerMixin, RegressorMixin, clone\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import RobustScaler, StandardScaler\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.pipeline import Pipeline, make_pipeline\n",
    "from scipy.stats import skew\n",
    "from sklearn.decomposition import PCA, KernelPCA\n",
    "from sklearn.preprocessing import Imputer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_score, GridSearchCV, KFold\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.linear_model import Lasso\n",
    "from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, ExtraTreesRegressor\n",
    "from sklearn.svm import SVR, LinearSVR\n",
    "from sklearn.linear_model import ElasticNet, SGDRegressor, BayesianRidge\n",
    "from sklearn.kernel_ridge import KernelRidge\n",
    "from xgboost import XGBRegressor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1460, 81), (1460, 81))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv('train.csv')\n",
    "test = pd.read_csv('train.csv')\n",
    "train.shape, test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1458, 81)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.drop(train[(train[\"GrLivArea\"]>4000)&(train[\"SalePrice\"]<300000)].index,inplace=True)\n",
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2918, 80)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full=pd.concat([train,test], ignore_index=True)\n",
    "full.drop(['Id'],axis=1, inplace=True)\n",
    "full.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Cleaning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Missing Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PoolQC          2905\n",
       "MiscFeature     2810\n",
       "Alley           2736\n",
       "Fence           2356\n",
       "FireplaceQu     1380\n",
       "LotFrontage      518\n",
       "GarageYrBlt      162\n",
       "GarageType       162\n",
       "GarageFinish     162\n",
       "GarageQual       162\n",
       "GarageCond       162\n",
       "BsmtFinType2      76\n",
       "BsmtExposure      76\n",
       "BsmtFinType1      74\n",
       "BsmtCond          74\n",
       "BsmtQual          74\n",
       "MasVnrArea        16\n",
       "MasVnrType        16\n",
       "Electrical         2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aa = full.isnull().sum()\n",
    "aa[aa>0].sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">LotFrontage</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>median</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Neighborhood</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Blmngtn</th>\n",
       "      <td>47.142857</td>\n",
       "      <td>43.0</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Blueste</th>\n",
       "      <td>24.000000</td>\n",
       "      <td>24.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BrDale</th>\n",
       "      <td>21.562500</td>\n",
       "      <td>21.0</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BrkSide</th>\n",
       "      <td>57.509804</td>\n",
       "      <td>52.0</td>\n",
       "      <td>102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ClearCr</th>\n",
       "      <td>83.461538</td>\n",
       "      <td>80.0</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CollgCr</th>\n",
       "      <td>71.682540</td>\n",
       "      <td>70.0</td>\n",
       "      <td>252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Crawfor</th>\n",
       "      <td>71.804878</td>\n",
       "      <td>74.0</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Edwards</th>\n",
       "      <td>66.532967</td>\n",
       "      <td>65.0</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gilbert</th>\n",
       "      <td>79.877551</td>\n",
       "      <td>65.0</td>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IDOTRR</th>\n",
       "      <td>62.500000</td>\n",
       "      <td>60.0</td>\n",
       "      <td>68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MeadowV</th>\n",
       "      <td>27.800000</td>\n",
       "      <td>21.0</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mitchel</th>\n",
       "      <td>70.083333</td>\n",
       "      <td>73.0</td>\n",
       "      <td>72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NAmes</th>\n",
       "      <td>76.462366</td>\n",
       "      <td>73.0</td>\n",
       "      <td>372</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NPkVill</th>\n",
       "      <td>32.285714</td>\n",
       "      <td>24.0</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NWAmes</th>\n",
       "      <td>81.288889</td>\n",
       "      <td>80.0</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NoRidge</th>\n",
       "      <td>91.878788</td>\n",
       "      <td>91.0</td>\n",
       "      <td>66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NridgHt</th>\n",
       "      <td>81.881579</td>\n",
       "      <td>88.5</td>\n",
       "      <td>152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OldTown</th>\n",
       "      <td>62.788991</td>\n",
       "      <td>60.0</td>\n",
       "      <td>218</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SWISU</th>\n",
       "      <td>58.913043</td>\n",
       "      <td>60.0</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sawyer</th>\n",
       "      <td>74.437500</td>\n",
       "      <td>71.0</td>\n",
       "      <td>96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SawyerW</th>\n",
       "      <td>71.500000</td>\n",
       "      <td>66.5</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Somerst</th>\n",
       "      <td>64.666667</td>\n",
       "      <td>73.5</td>\n",
       "      <td>156</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>StoneBr</th>\n",
       "      <td>62.700000</td>\n",
       "      <td>61.5</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Timber</th>\n",
       "      <td>80.133333</td>\n",
       "      <td>85.0</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Veenker</th>\n",
       "      <td>59.714286</td>\n",
       "      <td>68.0</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             LotFrontage             \n",
       "                    mean median count\n",
       "Neighborhood                         \n",
       "Blmngtn        47.142857   43.0    28\n",
       "Blueste        24.000000   24.0     4\n",
       "BrDale         21.562500   21.0    32\n",
       "BrkSide        57.509804   52.0   102\n",
       "ClearCr        83.461538   80.0    26\n",
       "CollgCr        71.682540   70.0   252\n",
       "Crawfor        71.804878   74.0    82\n",
       "Edwards        66.532967   65.0   182\n",
       "Gilbert        79.877551   65.0    98\n",
       "IDOTRR         62.500000   60.0    68\n",
       "MeadowV        27.800000   21.0    30\n",
       "Mitchel        70.083333   73.0    72\n",
       "NAmes          76.462366   73.0   372\n",
       "NPkVill        32.285714   24.0    14\n",
       "NWAmes         81.288889   80.0    90\n",
       "NoRidge        91.878788   91.0    66\n",
       "NridgHt        81.881579   88.5   152\n",
       "OldTown        62.788991   60.0   218\n",
       "SWISU          58.913043   60.0    46\n",
       "Sawyer         74.437500   71.0    96\n",
       "SawyerW        71.500000   66.5   100\n",
       "Somerst        64.666667   73.5   156\n",
       "StoneBr        62.700000   61.5    40\n",
       "Timber         80.133333   85.0    60\n",
       "Veenker        59.714286   68.0    14"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.groupby(['Neighborhood'])[['LotFrontage']].agg(['mean','median','count'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "full[\"LotAreaCut\"] = pd.qcut(full.LotArea,10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">LotFrontage</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>median</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotAreaCut</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>(1299.999, 5000.0]</th>\n",
       "      <td>36.691057</td>\n",
       "      <td>35.0</td>\n",
       "      <td>246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(5000.0, 7071.2]</th>\n",
       "      <td>55.984252</td>\n",
       "      <td>52.0</td>\n",
       "      <td>254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(7071.2, 8063.1]</th>\n",
       "      <td>63.869919</td>\n",
       "      <td>61.0</td>\n",
       "      <td>246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(8063.1, 8791.0]</th>\n",
       "      <td>67.120301</td>\n",
       "      <td>65.0</td>\n",
       "      <td>266</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(8791.0, 9477.0]</th>\n",
       "      <td>70.598361</td>\n",
       "      <td>70.5</td>\n",
       "      <td>244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(9477.0, 10197.0]</th>\n",
       "      <td>75.232558</td>\n",
       "      <td>76.0</td>\n",
       "      <td>258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10197.0, 11063.5]</th>\n",
       "      <td>73.729508</td>\n",
       "      <td>75.0</td>\n",
       "      <td>244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(11063.5, 12204.2]</th>\n",
       "      <td>84.765217</td>\n",
       "      <td>85.0</td>\n",
       "      <td>230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(12204.2, 14367.3]</th>\n",
       "      <td>84.611111</td>\n",
       "      <td>85.0</td>\n",
       "      <td>216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(14367.3, 215245.0]</th>\n",
       "      <td>94.933673</td>\n",
       "      <td>90.0</td>\n",
       "      <td>196</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    LotFrontage             \n",
       "                           mean median count\n",
       "LotAreaCut                                  \n",
       "(1299.999, 5000.0]    36.691057   35.0   246\n",
       "(5000.0, 7071.2]      55.984252   52.0   254\n",
       "(7071.2, 8063.1]      63.869919   61.0   246\n",
       "(8063.1, 8791.0]      67.120301   65.0   266\n",
       "(8791.0, 9477.0]      70.598361   70.5   244\n",
       "(9477.0, 10197.0]     75.232558   76.0   258\n",
       "(10197.0, 11063.5]    73.729508   75.0   244\n",
       "(11063.5, 12204.2]    84.765217   85.0   230\n",
       "(12204.2, 14367.3]    84.611111   85.0   216\n",
       "(14367.3, 215245.0]   94.933673   90.0   196"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.groupby(['LotAreaCut'])[['LotFrontage']].agg(['mean','median','count'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "full['LotFrontage']=full.groupby(['LotAreaCut','Neighborhood'])['LotFrontage'].transform(lambda x: x.fillna(x.median()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Since some combinations of LotArea and Neighborhood are not available, so we just LotAreaCut alone.\n",
    "full['LotFrontage']=full.groupby(['LotAreaCut'])['LotFrontage'].transform(lambda x: x.fillna(x.median()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then we filling in other missing values according to data_description."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "cols=[\"MasVnrArea\", \"BsmtUnfSF\", \"TotalBsmtSF\", \"GarageCars\", \"BsmtFinSF2\", \"BsmtFinSF1\", \"GarageArea\"]\n",
    "for col in cols:\n",
    "    full[col].fillna(0, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "cols1 = [\"PoolQC\" , \"MiscFeature\", \"Alley\", \"Fence\", \"FireplaceQu\", \"GarageQual\", \"GarageCond\", \"GarageFinish\", \"GarageYrBlt\", \"GarageType\", \"BsmtExposure\", \"BsmtCond\", \"BsmtQual\", \"BsmtFinType2\", \"BsmtFinType1\", \"MasVnrType\"]\n",
    "for col in cols1:\n",
    "    full[col].fillna(\"None\", inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# fill in with mode\n",
    "cols2 = [\"MSZoning\", \"BsmtFullBath\", \"BsmtHalfBath\", \"Utilities\", \"Functional\", \"Electrical\", \"KitchenQual\", \"SaleType\",\"Exterior1st\", \"Exterior2nd\"]\n",
    "for col in cols2:\n",
    "    full[col].fillna(full[col].mode()[0], inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Series([], dtype: int64)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.isnull().sum()[full.isnull().sum()>0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Feature Engineering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "NumStr = [\"MSSubClass\",\"BsmtFullBath\",\"BsmtHalfBath\",\"HalfBath\",\"BedroomAbvGr\",\"KitchenAbvGr\",\"MoSold\",\"YrSold\",\"YearBuilt\",\"YearRemodAdd\",\"LowQualFinSF\",\"GarageYrBlt\"]\n",
    "for col in NumStr:\n",
    "    full[col]=full[col].astype(str)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"3\" halign=\"left\">SalePrice</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>median</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MSSubClass</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>120</th>\n",
       "      <td>200779.080460</td>\n",
       "      <td>192000</td>\n",
       "      <td>174</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>160</th>\n",
       "      <td>138647.380952</td>\n",
       "      <td>146000</td>\n",
       "      <td>126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>180</th>\n",
       "      <td>102300.000000</td>\n",
       "      <td>88500</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>190</th>\n",
       "      <td>129613.333333</td>\n",
       "      <td>128250</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>185224.811567</td>\n",
       "      <td>159250</td>\n",
       "      <td>1072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>95829.724638</td>\n",
       "      <td>99900</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>156125.000000</td>\n",
       "      <td>142500</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>108591.666667</td>\n",
       "      <td>107500</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>143302.972222</td>\n",
       "      <td>132000</td>\n",
       "      <td>288</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>240175.258389</td>\n",
       "      <td>215600</td>\n",
       "      <td>596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>166772.416667</td>\n",
       "      <td>156000</td>\n",
       "      <td>120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>192437.500000</td>\n",
       "      <td>163500</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>80</th>\n",
       "      <td>169736.551724</td>\n",
       "      <td>166500</td>\n",
       "      <td>116</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>147810.000000</td>\n",
       "      <td>140750</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>133541.076923</td>\n",
       "      <td>135980</td>\n",
       "      <td>104</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                SalePrice              \n",
       "                     mean  median count\n",
       "MSSubClass                             \n",
       "120         200779.080460  192000   174\n",
       "160         138647.380952  146000   126\n",
       "180         102300.000000   88500    20\n",
       "190         129613.333333  128250    60\n",
       "20          185224.811567  159250  1072\n",
       "30           95829.724638   99900   138\n",
       "40          156125.000000  142500     8\n",
       "45          108591.666667  107500    24\n",
       "50          143302.972222  132000   288\n",
       "60          240175.258389  215600   596\n",
       "70          166772.416667  156000   120\n",
       "75          192437.500000  163500    32\n",
       "80          169736.551724  166500   116\n",
       "85          147810.000000  140750    40\n",
       "90          133541.076923  135980   104"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.groupby(['MSSubClass'])[['SalePrice']].agg(['mean','median','count'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def map_values():\n",
    "    full[\"oMSSubClass\"] = full.MSSubClass.map({'180':1, \n",
    "                                        '30':2, '45':2, \n",
    "                                        '190':3, '50':3, '90':3, \n",
    "                                        '85':4, '40':4, '160':4, \n",
    "                                        '70':5, '20':5, '75':5, '80':5, '150':5,\n",
    "                                        '120': 6, '60':6})\n",
    "    \n",
    "    full[\"oMSZoning\"] = full.MSZoning.map({'C (all)':1, 'RH':2, 'RM':2, 'RL':3, 'FV':4})\n",
    "    \n",
    "    full[\"oNeighborhood\"] = full.Neighborhood.map({'MeadowV':1,\n",
    "                                               'IDOTRR':2, 'BrDale':2,\n",
    "                                               'OldTown':3, 'Edwards':3, 'BrkSide':3,\n",
    "                                               'Sawyer':4, 'Blueste':4, 'SWISU':4, 'NAmes':4,\n",
    "                                               'NPkVill':5, 'Mitchel':5,\n",
    "                                               'SawyerW':6, 'Gilbert':6, 'NWAmes':6,\n",
    "                                               'Blmngtn':7, 'CollgCr':7, 'ClearCr':7, 'Crawfor':7,\n",
    "                                               'Veenker':8, 'Somerst':8, 'Timber':8,\n",
    "                                               'StoneBr':9,\n",
    "                                               'NoRidge':10, 'NridgHt':10})\n",
    "    \n",
    "    full[\"oCondition1\"] = full.Condition1.map({'Artery':1,\n",
    "                                           'Feedr':2, 'RRAe':2,\n",
    "                                           'Norm':3, 'RRAn':3,\n",
    "                                           'PosN':4, 'RRNe':4,\n",
    "                                           'PosA':5 ,'RRNn':5})\n",
    "    \n",
    "    full[\"oBldgType\"] = full.BldgType.map({'2fmCon':1, 'Duplex':1, 'Twnhs':1, '1Fam':2, 'TwnhsE':2})\n",
    "    \n",
    "    full[\"oHouseStyle\"] = full.HouseStyle.map({'1.5Unf':1, \n",
    "                                           '1.5Fin':2, '2.5Unf':2, 'SFoyer':2, \n",
    "                                           '1Story':3, 'SLvl':3,\n",
    "                                           '2Story':4, '2.5Fin':4})\n",
    "    \n",
    "    full[\"oExterior1st\"] = full.Exterior1st.map({'BrkComm':1,\n",
    "                                             'AsphShn':2, 'CBlock':2, 'AsbShng':2,\n",
    "                                             'WdShing':3, 'Wd Sdng':3, 'MetalSd':3, 'Stucco':3, 'HdBoard':3,\n",
    "                                             'BrkFace':4, 'Plywood':4,\n",
    "                                             'VinylSd':5,\n",
    "                                             'CemntBd':6,\n",
    "                                             'Stone':7, 'ImStucc':7})\n",
    "    \n",
    "    full[\"oMasVnrType\"] = full.MasVnrType.map({'BrkCmn':1, 'None':1, 'BrkFace':2, 'Stone':3})\n",
    "    \n",
    "    full[\"oExterQual\"] = full.ExterQual.map({'Fa':1, 'TA':2, 'Gd':3, 'Ex':4})\n",
    "    \n",
    "    full[\"oFoundation\"] = full.Foundation.map({'Slab':1, \n",
    "                                           'BrkTil':2, 'CBlock':2, 'Stone':2,\n",
    "                                           'Wood':3, 'PConc':4})\n",
    "    \n",
    "    full[\"oBsmtQual\"] = full.BsmtQual.map({'Fa':2, 'None':1, 'TA':3, 'Gd':4, 'Ex':5})\n",
    "    \n",
    "    full[\"oBsmtExposure\"] = full.BsmtExposure.map({'None':1, 'No':2, 'Av':3, 'Mn':3, 'Gd':4})\n",
    "    \n",
    "    full[\"oHeating\"] = full.Heating.map({'Floor':1, 'Grav':1, 'Wall':2, 'OthW':3, 'GasW':4, 'GasA':5})\n",
    "    \n",
    "    full[\"oHeatingQC\"] = full.HeatingQC.map({'Po':1, 'Fa':2, 'TA':3, 'Gd':4, 'Ex':5})\n",
    "    \n",
    "    full[\"oKitchenQual\"] = full.KitchenQual.map({'Fa':1, 'TA':2, 'Gd':3, 'Ex':4})\n",
    "    \n",
    "    full[\"oFunctional\"] = full.Functional.map({'Maj2':1, 'Maj1':2, 'Min1':2, 'Min2':2, 'Mod':2, 'Sev':2, 'Typ':3})\n",
    "    \n",
    "    full[\"oFireplaceQu\"] = full.FireplaceQu.map({'None':1, 'Po':1, 'Fa':2, 'TA':3, 'Gd':4, 'Ex':5})\n",
    "    \n",
    "    full[\"oGarageType\"] = full.GarageType.map({'CarPort':1, 'None':1,\n",
    "                                           'Detchd':2,\n",
    "                                           '2Types':3, 'Basment':3,\n",
    "                                           'Attchd':4, 'BuiltIn':5})\n",
    "    \n",
    "    full[\"oGarageFinish\"] = full.GarageFinish.map({'None':1, 'Unf':2, 'RFn':3, 'Fin':4})\n",
    "    \n",
    "    full[\"oPavedDrive\"] = full.PavedDrive.map({'N':1, 'P':2, 'Y':3})\n",
    "    \n",
    "    full[\"oSaleType\"] = full.SaleType.map({'COD':1, 'ConLD':1, 'ConLI':1, 'ConLw':1, 'Oth':1, 'WD':1,\n",
    "                                       'CWD':2, 'Con':3, 'New':3})\n",
    "    \n",
    "    full[\"oSaleCondition\"] = full.SaleCondition.map({'AdjLand':1, 'Abnorml':2, 'Alloca':2, 'Family':2, 'Normal':3, 'Partial':4})            \n",
    "                \n",
    "    return \"Done!\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Done!'"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "map_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# drop two unwanted columns\n",
    "full.drop(\"LotAreaCut\",axis=1,inplace=True)\n",
    "full.drop(['SalePrice'],axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "class labelenc(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self):\n",
    "        pass\n",
    "    \n",
    "    def fit(self,X,y=None):\n",
    "        return self\n",
    "    \n",
    "    def transform(self,X):\n",
    "        lab=LabelEncoder()\n",
    "        X[\"YearBuilt\"] = lab.fit_transform(X[\"YearBuilt\"])\n",
    "        X[\"YearRemodAdd\"] = lab.fit_transform(X[\"YearRemodAdd\"])\n",
    "        X[\"GarageYrBlt\"] = lab.fit_transform(X[\"GarageYrBlt\"])\n",
    "        return X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "class skew_dummies(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self,skew=0.5):\n",
    "        self.skew = skew\n",
    "    \n",
    "    def fit(self,X,y=None):\n",
    "        return self\n",
    "    \n",
    "    def transform(self,X):\n",
    "        X_numeric=X.select_dtypes(exclude=[\"object\"])\n",
    "        skewness = X_numeric.apply(lambda x: skew(x))\n",
    "        skewness_features = skewness[abs(skewness) >= self.skew].index\n",
    "        X[skewness_features] = np.log1p(X[skewness_features])\n",
    "        X = pd.get_dummies(X)\n",
    "        return X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# build pipeline\n",
    "pipe = Pipeline([\n",
    "    ('labenc', labelenc()),\n",
    "    ('skew_dummies', skew_dummies(skew=1)),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2918, 393)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# save the original data for later use\n",
    "full2 = full.copy()\n",
    "data_pipe = pipe.fit_transform(full2)\n",
    "data_pipe.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LotFrontage</th>\n",
       "      <th>LotArea</th>\n",
       "      <th>OverallQual</th>\n",
       "      <th>OverallCond</th>\n",
       "      <th>YearBuilt</th>\n",
       "      <th>YearRemodAdd</th>\n",
       "      <th>MasVnrArea</th>\n",
       "      <th>BsmtFinSF1</th>\n",
       "      <th>BsmtFinSF2</th>\n",
       "      <th>BsmtUnfSF</th>\n",
       "      <th>...</th>\n",
       "      <th>SaleType_ConLw</th>\n",
       "      <th>SaleType_New</th>\n",
       "      <th>SaleType_Oth</th>\n",
       "      <th>SaleType_WD</th>\n",
       "      <th>SaleCondition_Abnorml</th>\n",
       "      <th>SaleCondition_AdjLand</th>\n",
       "      <th>SaleCondition_Alloca</th>\n",
       "      <th>SaleCondition_Family</th>\n",
       "      <th>SaleCondition_Normal</th>\n",
       "      <th>SaleCondition_Partial</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.189655</td>\n",
       "      <td>9.042040</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>104</td>\n",
       "      <td>53</td>\n",
       "      <td>5.283204</td>\n",
       "      <td>6.561031</td>\n",
       "      <td>0.0</td>\n",
       "      <td>150</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.394449</td>\n",
       "      <td>9.169623</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>77</td>\n",
       "      <td>26</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.886532</td>\n",
       "      <td>0.0</td>\n",
       "      <td>284</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.234107</td>\n",
       "      <td>9.328212</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>102</td>\n",
       "      <td>52</td>\n",
       "      <td>5.093750</td>\n",
       "      <td>6.188264</td>\n",
       "      <td>0.0</td>\n",
       "      <td>434</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.110874</td>\n",
       "      <td>9.164401</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>19</td>\n",
       "      <td>20</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.379897</td>\n",
       "      <td>0.0</td>\n",
       "      <td>540</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.442651</td>\n",
       "      <td>9.565284</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>101</td>\n",
       "      <td>50</td>\n",
       "      <td>5.860786</td>\n",
       "      <td>6.486161</td>\n",
       "      <td>0.0</td>\n",
       "      <td>490</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 393 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   LotFrontage   LotArea  OverallQual  OverallCond  YearBuilt  YearRemodAdd  \\\n",
       "0     4.189655  9.042040            7            5        104            53   \n",
       "1     4.394449  9.169623            6            8         77            26   \n",
       "2     4.234107  9.328212            7            5        102            52   \n",
       "3     4.110874  9.164401            7            5         19            20   \n",
       "4     4.442651  9.565284            8            5        101            50   \n",
       "\n",
       "   MasVnrArea  BsmtFinSF1  BsmtFinSF2  BsmtUnfSF  ...  SaleType_ConLw  \\\n",
       "0    5.283204    6.561031         0.0        150  ...               0   \n",
       "1    0.000000    6.886532         0.0        284  ...               0   \n",
       "2    5.093750    6.188264         0.0        434  ...               0   \n",
       "3    0.000000    5.379897         0.0        540  ...               0   \n",
       "4    5.860786    6.486161         0.0        490  ...               0   \n",
       "\n",
       "   SaleType_New  SaleType_Oth  SaleType_WD  SaleCondition_Abnorml  \\\n",
       "0             0             0            1                      0   \n",
       "1             0             0            1                      0   \n",
       "2             0             0            1                      0   \n",
       "3             0             0            1                      1   \n",
       "4             0             0            1                      0   \n",
       "\n",
       "   SaleCondition_AdjLand  SaleCondition_Alloca  SaleCondition_Family  \\\n",
       "0                      0                     0                     0   \n",
       "1                      0                     0                     0   \n",
       "2                      0                     0                     0   \n",
       "3                      0                     0                     0   \n",
       "4                      0                     0                     0   \n",
       "\n",
       "   SaleCondition_Normal  SaleCondition_Partial  \n",
       "0                     1                      0  \n",
       "1                     1                      0  \n",
       "2                     1                      0  \n",
       "3                     0                      0  \n",
       "4                     1                      0  \n",
       "\n",
       "[5 rows x 393 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_pipe.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = RobustScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_train=train.shape[0]\n",
    "\n",
    "X = data_pipe[:n_train]\n",
    "test_X = data_pipe[n_train:]\n",
    "y= train.SalePrice\n",
    "\n",
    "X_scaled = scaler.fit(X).transform(X)\n",
    "y_log = np.log(train.SalePrice)\n",
    "test_X_scaled = scaler.transform(test_X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Feature Selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Lasso(alpha=0.001, copy_X=True, fit_intercept=True, max_iter=1000,\n",
       "      normalize=False, positive=False, precompute=False, random_state=None,\n",
       "      selection='cyclic', tol=0.0001, warm_start=False)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lasso=Lasso(alpha=0.001)\n",
    "lasso.fit(X_scaled,y_log)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "FI_lasso = pd.DataFrame({\"Feature Importance\":lasso.coef_}, index=data_pipe.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature Importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>GrLivArea</th>\n",
       "      <td>0.125548</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OverallQual</th>\n",
       "      <td>0.105825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1stFlrSF</th>\n",
       "      <td>0.080337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>YearBuilt</th>\n",
       "      <td>0.071358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Functional_Typ</th>\n",
       "      <td>0.061427</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinSF1</th>\n",
       "      <td>0.059313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2ndFlrSF</th>\n",
       "      <td>0.055284</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtExposure_Gd</th>\n",
       "      <td>0.051451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>KitchenQual_Ex</th>\n",
       "      <td>0.050290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>oNeighborhood</th>\n",
       "      <td>0.049651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Exterior1st_BrkFace</th>\n",
       "      <td>0.048461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtQual_Ex</th>\n",
       "      <td>0.048182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Neighborhood_Crawfor</th>\n",
       "      <td>0.045218</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Neighborhood_BrkSide</th>\n",
       "      <td>0.044476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>OverallCond</th>\n",
       "      <td>0.044118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>oSaleCondition</th>\n",
       "      <td>0.040199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Condition1_Norm</th>\n",
       "      <td>0.034509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>oMSZoning</th>\n",
       "      <td>0.034395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotArea</th>\n",
       "      <td>0.029568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HalfBath_1</th>\n",
       "      <td>0.023039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageCars</th>\n",
       "      <td>0.022783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageArea</th>\n",
       "      <td>0.020677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fireplaces</th>\n",
       "      <td>0.020091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>WoodDeckSF</th>\n",
       "      <td>0.018335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Foundation_PConc</th>\n",
       "      <td>0.018184</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotConfig_CulDSac</th>\n",
       "      <td>0.016137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PoolArea</th>\n",
       "      <td>0.014601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>oHeatingQC</th>\n",
       "      <td>0.014527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MSSubClass_20</th>\n",
       "      <td>0.014322</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>YearRemodAdd</th>\n",
       "      <td>0.013949</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_WdShngl</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_WdShake</th>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BldgType_TwnhsE</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_ClyTile</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_Roll</th>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_Metal</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_Membran</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RoofMatl_CompShg</th>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BldgType_1Fam</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Condition1_Artery</th>\n",
       "      <td>-0.000225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtCond_Fa</th>\n",
       "      <td>-0.000268</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotFrontage</th>\n",
       "      <td>-0.000390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotConfig_Inside</th>\n",
       "      <td>-0.000629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinSF2</th>\n",
       "      <td>-0.001002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Exterior1st_Wd Sdng</th>\n",
       "      <td>-0.001054</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BedroomAbvGr_3</th>\n",
       "      <td>-0.001287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Neighborhood_CollgCr</th>\n",
       "      <td>-0.001340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MiscVal</th>\n",
       "      <td>-0.002305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageCond_Fa</th>\n",
       "      <td>-0.003532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SaleType_WD</th>\n",
       "      <td>-0.004395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtExposure_No</th>\n",
       "      <td>-0.007258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>oHouseStyle</th>\n",
       "      <td>-0.007677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>YrSold_2009</th>\n",
       "      <td>-0.008433</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Foundation_BrkTil</th>\n",
       "      <td>-0.008745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Neighborhood_NWAmes</th>\n",
       "      <td>-0.011950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>KitchenAbvGr_2</th>\n",
       "      <td>-0.017797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SaleCondition_Abnorml</th>\n",
       "      <td>-0.018966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFullBath_0</th>\n",
       "      <td>-0.026645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CentralAir_N</th>\n",
       "      <td>-0.029902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MSZoning_C (all)</th>\n",
       "      <td>-0.100707</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>393 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       Feature Importance\n",
       "GrLivArea                        0.125548\n",
       "OverallQual                      0.105825\n",
       "1stFlrSF                         0.080337\n",
       "YearBuilt                        0.071358\n",
       "Functional_Typ                   0.061427\n",
       "BsmtFinSF1                       0.059313\n",
       "2ndFlrSF                         0.055284\n",
       "BsmtExposure_Gd                  0.051451\n",
       "KitchenQual_Ex                   0.050290\n",
       "oNeighborhood                    0.049651\n",
       "Exterior1st_BrkFace              0.048461\n",
       "BsmtQual_Ex                      0.048182\n",
       "Neighborhood_Crawfor             0.045218\n",
       "Neighborhood_BrkSide             0.044476\n",
       "OverallCond                      0.044118\n",
       "oSaleCondition                   0.040199\n",
       "Condition1_Norm                  0.034509\n",
       "oMSZoning                        0.034395\n",
       "LotArea                          0.029568\n",
       "HalfBath_1                       0.023039\n",
       "GarageCars                       0.022783\n",
       "GarageArea                       0.020677\n",
       "Fireplaces                       0.020091\n",
       "WoodDeckSF                       0.018335\n",
       "Foundation_PConc                 0.018184\n",
       "LotConfig_CulDSac                0.016137\n",
       "PoolArea                         0.014601\n",
       "oHeatingQC                       0.014527\n",
       "MSSubClass_20                    0.014322\n",
       "YearRemodAdd                     0.013949\n",
       "...                                   ...\n",
       "RoofMatl_WdShngl                 0.000000\n",
       "RoofMatl_WdShake                -0.000000\n",
       "BldgType_TwnhsE                  0.000000\n",
       "RoofMatl_ClyTile                 0.000000\n",
       "RoofMatl_Roll                   -0.000000\n",
       "RoofMatl_Metal                   0.000000\n",
       "RoofMatl_Membran                 0.000000\n",
       "RoofMatl_CompShg                -0.000000\n",
       "BldgType_1Fam                    0.000000\n",
       "Condition1_Artery               -0.000225\n",
       "BsmtCond_Fa                     -0.000268\n",
       "LotFrontage                     -0.000390\n",
       "LotConfig_Inside                -0.000629\n",
       "BsmtFinSF2                      -0.001002\n",
       "Exterior1st_Wd Sdng             -0.001054\n",
       "BedroomAbvGr_3                  -0.001287\n",
       "Neighborhood_CollgCr            -0.001340\n",
       "MiscVal                         -0.002305\n",
       "GarageCond_Fa                   -0.003532\n",
       "SaleType_WD                     -0.004395\n",
       "BsmtExposure_No                 -0.007258\n",
       "oHouseStyle                     -0.007677\n",
       "YrSold_2009                     -0.008433\n",
       "Foundation_BrkTil               -0.008745\n",
       "Neighborhood_NWAmes             -0.011950\n",
       "KitchenAbvGr_2                  -0.017797\n",
       "SaleCondition_Abnorml           -0.018966\n",
       "BsmtFullBath_0                  -0.026645\n",
       "CentralAir_N                    -0.029902\n",
       "MSZoning_C (all)                -0.100707\n",
       "\n",
       "[393 rows x 1 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "FI_lasso.sort_values(\"Feature Importance\",ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([-0.15, -0.1 , -0.05,  0.  ,  0.05,  0.1 ,  0.15]),\n",
       " <a list of 7 Text xticklabel objects>)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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+Sb77bcfe+21F2eccQYzZ85k6tSpAMyYMaPdNvv3788dd9wBQERw4YUXstFGG/H0009z+umnc+utt7Z7/ttvv82tt97Kfffdx6hRo7jjjju45JJL2HfffXn++ecZMmQI77zzDp/5zGc466yzuOyyy7j00ks577zzGDNmDD/5yU8YNmwYF198MZdeeinnnHMOkI2w33777QDMmjWL4cOHv5cYr7HGGhxxxBEA/PSnP+WWW27h2GOzm8rPmTOHO+64g5deeoljjjmGESNGcP/993PPPfcwZcoUBgwYwFtvvQXAKaecUvb1mln1GzRpRtWuTzPzfSesmrl/Wisn07bSaZ3mXXgDsgcffJC///3v3HnnnQDMmzePWbNmse6663LhhRfy2GOPUVdXx3/+8x9ef/31stvcf/9sbfiCBQt46qmn+MY3vvHesXfffbfD81uT/80224xcLsenP/1pADbddFNeffVVhgwZQp8+fd5r56CDDuK4445j7ty5vP322wwbNgyAQw455ANtt5YvZubMmVx00UXMnTuXBQsWsOuuu753bJ999qFPnz5suumm770f06ZN49BDD33vedEf+chHuny9ZmZmZma9nZNp6zXOPfdcdttttw/smzhxIm+88QZ33303/fr1Y4cddij6TOT6+nry+fcfu922zKqrZkvhly1bxhprrPHeiHZnrbLKKgD06dOH/v37v7e/T58+Je9IXldX12G9rXEVc+KJJ3LttdeyxRZbMHHiRB555JH3jrXGA7x33fl8/kNtdvV6zczMzMx6O9+AzHqFXXfdlQkTJrBkyRIAXn75Zd555x3mzZtHLpejX79+TJ8+nVdfzZasr7baasyfP/+98z/+8Y/z4osvsnjxYubOncvDDz9ctJ2BAwey3nrr8Yc/ZE8Vy+fzvPDCC8vlGpYtW/beyPqkSZPYfvvtWWONNVhzzTV57LHHALj99tv53Oc+V/T81VdfnQUL3r+5+/z58xk0aBBLlixh0qS2y+4/bNddd+W3v/0tCxcuBOCtt97q0es1MzMzM1uZeWTauqUzj7JaEQ4//HD++c9/ss8++5DP51l77bW57rrrOOiggzj66KP54he/yBZbbPHejbPWXntttttuO/bYYw923313fvjDH7LffvsxfPhwNtxwQ4YMGVKyrSuvvJLTTz+dyy+/nKVLl3LAAQewxRZb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\n",
      "text/plain": [
       "<Figure size 1080x1800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "FI_lasso[FI_lasso[\"Feature Importance\"]!=0].sort_values(\"Feature Importance\").plot(kind=\"barh\",figsize=(15,25))\n",
    "plt.xticks(rotation=90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "class add_feature(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self,additional=1):\n",
    "        self.additional = additional\n",
    "    \n",
    "    def fit(self,X,y=None):\n",
    "        return self\n",
    "    \n",
    "    def transform(self,X):\n",
    "        if self.additional==1:\n",
    "            X[\"TotalHouse\"] = X[\"TotalBsmtSF\"] + X[\"1stFlrSF\"] + X[\"2ndFlrSF\"]   \n",
    "            X[\"TotalArea\"] = X[\"TotalBsmtSF\"] + X[\"1stFlrSF\"] + X[\"2ndFlrSF\"] + X[\"GarageArea\"]\n",
    "            \n",
    "        else:\n",
    "            X[\"TotalHouse\"] = X[\"TotalBsmtSF\"] + X[\"1stFlrSF\"] + X[\"2ndFlrSF\"]   \n",
    "            X[\"TotalArea\"] = X[\"TotalBsmtSF\"] + X[\"1stFlrSF\"] + X[\"2ndFlrSF\"] + X[\"GarageArea\"]\n",
    "            \n",
    "            X[\"+_TotalHouse_OverallQual\"] = X[\"TotalHouse\"] * X[\"OverallQual\"]\n",
    "            X[\"+_GrLivArea_OverallQual\"] = X[\"GrLivArea\"] * X[\"OverallQual\"]\n",
    "            X[\"+_oMSZoning_TotalHouse\"] = X[\"oMSZoning\"] * X[\"TotalHouse\"]\n",
    "            X[\"+_oMSZoning_OverallQual\"] = X[\"oMSZoning\"] + X[\"OverallQual\"]\n",
    "            X[\"+_oMSZoning_YearBuilt\"] = X[\"oMSZoning\"] + X[\"YearBuilt\"]\n",
    "            X[\"+_oNeighborhood_TotalHouse\"] = X[\"oNeighborhood\"] * X[\"TotalHouse\"]\n",
    "            X[\"+_oNeighborhood_OverallQual\"] = X[\"oNeighborhood\"] + X[\"OverallQual\"]\n",
    "            X[\"+_oNeighborhood_YearBuilt\"] = X[\"oNeighborhood\"] + X[\"YearBuilt\"]\n",
    "            X[\"+_BsmtFinSF1_OverallQual\"] = X[\"BsmtFinSF1\"] * X[\"OverallQual\"]\n",
    "            \n",
    "            X[\"-_oFunctional_TotalHouse\"] = X[\"oFunctional\"] * X[\"TotalHouse\"]\n",
    "            X[\"-_oFunctional_OverallQual\"] = X[\"oFunctional\"] + X[\"OverallQual\"]\n",
    "            X[\"-_LotArea_OverallQual\"] = X[\"LotArea\"] * X[\"OverallQual\"]\n",
    "            X[\"-_TotalHouse_LotArea\"] = X[\"TotalHouse\"] + X[\"LotArea\"]\n",
    "            X[\"-_oCondition1_TotalHouse\"] = X[\"oCondition1\"] * X[\"TotalHouse\"]\n",
    "            X[\"-_oCondition1_OverallQual\"] = X[\"oCondition1\"] + X[\"OverallQual\"]\n",
    "            \n",
    "           \n",
    "            X[\"Bsmt\"] = X[\"BsmtFinSF1\"] + X[\"BsmtFinSF2\"] + X[\"BsmtUnfSF\"]\n",
    "            X[\"Rooms\"] = X[\"FullBath\"]+X[\"TotRmsAbvGrd\"]\n",
    "            X[\"PorchArea\"] = X[\"OpenPorchSF\"]+X[\"EnclosedPorch\"]+X[\"3SsnPorch\"]+X[\"ScreenPorch\"]\n",
    "            X[\"TotalPlace\"] = X[\"TotalBsmtSF\"] + X[\"1stFlrSF\"] + X[\"2ndFlrSF\"] + X[\"GarageArea\"] + X[\"OpenPorchSF\"]+X[\"EnclosedPorch\"]+X[\"3SsnPorch\"]+X[\"ScreenPorch\"]\n",
    "\n",
    "    \n",
    "            return X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "pipe = Pipeline([\n",
    "    ('labenc', labelenc()),\n",
    "    ('add_feature', add_feature(additional=2)),\n",
    "    ('skew_dummies', skew_dummies(skew=1)),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "full_pipe = pipe.fit_transform(full)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2918, 414)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_pipe.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_train=train.shape[0]\n",
    "X = full_pipe[:n_train]\n",
    "test_X = full_pipe[n_train:]\n",
    "y= train.SalePrice\n",
    "\n",
    "X_scaled = scaler.fit(X).transform(X)\n",
    "y_log = np.log(train.SalePrice)\n",
    "test_X_scaled = scaler.transform(test_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=410)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_scaled=pca.fit_transform(X_scaled)\n",
    "test_X_scaled = pca.transform(test_X_scaled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1458, 410), (1460, 410))"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_scaled.shape, test_X_scaled.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Modeling & Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# define cross validation strategy\n",
    "def rmse_cv(model,X,y):\n",
    "    rmse = np.sqrt(-cross_val_score(model, X, y, scoring=\"neg_mean_squared_error\", cv=5))\n",
    "    return rmse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "models = [LinearRegression(),Ridge(),Lasso(alpha=0.01,max_iter=10000),RandomForestRegressor(),GradientBoostingRegressor(),SVR(),LinearSVR(),\n",
    "          ElasticNet(alpha=0.001,max_iter=10000),SGDRegressor(max_iter=1000,tol=1e-3),BayesianRidge(),KernelRidge(alpha=0.6, kernel='polynomial', degree=2, coef0=2.5),\n",
    "          ExtraTreesRegressor(),XGBRegressor()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LR: 1435868430.630623, 699569920.5444\n",
      "Ridge: 0.118458, 0.0092\n",
      "Lasso: 0.121442, 0.0055\n",
      "RF: 0.142960, 0.0070\n",
      "GBR: 0.125968, 0.0086\n",
      "SVR: 0.114199, 0.0060\n",
      "LinSVR: 0.125096, 0.0061\n",
      "Ela: 0.111376, 0.0064\n",
      "SGD: 0.148955, 0.0064\n",
      "Bay: 0.111104, 0.0061\n",
      "Ker: 0.109483, 0.0054\n",
      "Extra: 0.145165, 0.0085\n",
      "[16:54:43] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[16:54:46] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[16:54:48] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[16:54:51] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "[16:54:53] WARNING: d:\\build\\xgboost\\xgboost-0.90.git\\src\\objective\\regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
      "Xgb: 0.127760, 0.0078\n"
     ]
    }
   ],
   "source": [
    "names = [\"LR\", \"Ridge\", \"Lasso\", \"RF\", \"GBR\", \"SVR\", \"LinSVR\", \"Ela\",\"SGD\",\"Bay\",\"Ker\",\"Extra\",\"Xgb\"]\n",
    "for name, model in zip(names, models):\n",
    "    score = rmse_cv(model, X_scaled, y_log)\n",
    "    print(\"{}: {:.6f}, {:.4f}\".format(name,score.mean(),score.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "class grid():\n",
    "    def __init__(self,model):\n",
    "        self.model = model\n",
    "    \n",
    "    def grid_get(self,X,y,param_grid):\n",
    "        grid_search = GridSearchCV(self.model,param_grid,cv=5, scoring=\"neg_mean_squared_error\")\n",
    "        grid_search.fit(X,y)\n",
    "        print(grid_search.best_params_, np.sqrt(-grid_search.best_score_))\n",
    "        grid_search.cv_results_['mean_test_score'] = np.sqrt(-grid_search.cv_results_['mean_test_score'])\n",
    "        print(pd.DataFrame(grid_search.cv_results_)[['params','mean_test_score','std_test_score']])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'alpha': 0.0005, 'max_iter': 10000} 0.11161753334393558\n",
      "                                 params  mean_test_score  std_test_score\n",
      "0  {'alpha': 0.0004, 'max_iter': 10000}         0.111640        0.001489\n",
      "1  {'alpha': 0.0005, 'max_iter': 10000}         0.111618        0.001470\n",
      "2  {'alpha': 0.0007, 'max_iter': 10000}         0.111931        0.001412\n",
      "3  {'alpha': 0.0009, 'max_iter': 10000}         0.112338        0.001354\n"
     ]
    }
   ],
   "source": [
    "grid(Lasso()).grid_get(X_scaled,y_log,{'alpha': [0.0004,0.0005,0.0007,0.0009],'max_iter':[10000]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'alpha': 55} 0.11080493900022036\n",
      "          params  mean_test_score  std_test_score\n",
      "0  {'alpha': 35}         0.110900        0.001297\n",
      "1  {'alpha': 40}         0.110851        0.001279\n",
      "2  {'alpha': 45}         0.110822        0.001265\n",
      "3  {'alpha': 50}         0.110808        0.001254\n",
      "4  {'alpha': 55}         0.110805        0.001246\n",
      "5  {'alpha': 60}         0.110811        0.001239\n",
      "6  {'alpha': 65}         0.110825        0.001233\n",
      "7  {'alpha': 70}         0.110844        0.001228\n",
      "8  {'alpha': 80}         0.110898        0.001221\n",
      "9  {'alpha': 90}         0.110968        0.001217\n"
     ]
    }
   ],
   "source": [
    "grid(Ridge()).grid_get(X_scaled,y_log,{'alpha':[35,40,45,50,55,60,65,70,80,90]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'C': 11, 'epsilon': 0.009, 'gamma': 0.0004, 'kernel': 'rbf'} 0.10916204062490995\n",
      "                                               params  mean_test_score  \\\n",
      "0   {'C': 11, 'epsilon': 0.008, 'gamma': 0.0003, '...         0.109219   \n",
      "1   {'C': 11, 'epsilon': 0.008, 'gamma': 0.0004, '...         0.109216   \n",
      "2   {'C': 11, 'epsilon': 0.009, 'gamma': 0.0003, '...         0.109171   \n",
      "3   {'C': 11, 'epsilon': 0.009, 'gamma': 0.0004, '...         0.109162   \n",
      "4   {'C': 13, 'epsilon': 0.008, 'gamma': 0.0003, '...         0.109207   \n",
      "5   {'C': 13, 'epsilon': 0.008, 'gamma': 0.0004, '...         0.109226   \n",
      "6   {'C': 13, 'epsilon': 0.009, 'gamma': 0.0003, '...         0.109217   \n",
      "7   {'C': 13, 'epsilon': 0.009, 'gamma': 0.0004, '...         0.109188   \n",
      "8   {'C': 15, 'epsilon': 0.008, 'gamma': 0.0003, '...         0.109230   \n",
      "9   {'C': 15, 'epsilon': 0.008, 'gamma': 0.0004, '...         0.109265   \n",
      "10  {'C': 15, 'epsilon': 0.009, 'gamma': 0.0003, '...         0.109201   \n",
      "11  {'C': 15, 'epsilon': 0.009, 'gamma': 0.0004, '...         0.109210   \n",
      "\n",
      "    std_test_score  \n",
      "0         0.001572  \n",
      "1         0.001600  \n",
      "2         0.001563  \n",
      "3         0.001596  \n",
      "4         0.001583  \n",
      "5         0.001625  \n",
      "6         0.001582  \n",
      "7         0.001623  \n",
      "8         0.001602  \n",
      "9         0.001647  \n",
      "10        0.001609  \n",
      "11        0.001645  \n"
     ]
    }
   ],
   "source": [
    "grid(SVR()).grid_get(X_scaled,y_log,{'C':[11,13,15],'kernel':[\"rbf\"],\"gamma\":[0.0003,0.0004],\"epsilon\":[0.008,0.009]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'alpha': 0.4, 'coef0': 1, 'degree': 3, 'kernel': 'polynomial'} 0.10867870907227041\n",
      "                                              params  mean_test_score  \\\n",
      "0  {'alpha': 0.2, 'coef0': 0.8, 'degree': 3, 'ker...         0.108724   \n",
      "1  {'alpha': 0.2, 'coef0': 1, 'degree': 3, 'kerne...         0.108954   \n",
      "2  {'alpha': 0.3, 'coef0': 0.8, 'degree': 3, 'ker...         0.108843   \n",
      "3  {'alpha': 0.3, 'coef0': 1, 'degree': 3, 'kerne...         0.108684   \n",
      "4  {'alpha': 0.4, 'coef0': 0.8, 'degree': 3, 'ker...         0.109198   \n",
      "5  {'alpha': 0.4, 'coef0': 1, 'degree': 3, 'kerne...         0.108679   \n",
      "\n",
      "   std_test_score  \n",
      "0        0.001165  \n",
      "1        0.001189  \n",
      "2        0.001151  \n",
      "3        0.001163  \n",
      "4        0.001146  \n",
      "5        0.001150  \n"
     ]
    }
   ],
   "source": [
    "param_grid={'alpha':[0.2,0.3,0.4], 'kernel':[\"polynomial\"], 'degree':[3],'coef0':[0.8,1]}\n",
    "grid(KernelRidge()).grid_get(X_scaled,y_log,param_grid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'alpha': 0.004, 'l1_ratio': 0.08, 'max_iter': 10000} 0.11122617744527434\n",
      "                                              params  mean_test_score  \\\n",
      "0  {'alpha': 0.0008, 'l1_ratio': 0.08, 'max_iter'...         0.115151   \n",
      "1  {'alpha': 0.0008, 'l1_ratio': 0.1, 'max_iter':...         0.114520   \n",
      "2  {'alpha': 0.0008, 'l1_ratio': 0.3, 'max_iter':...         0.111954   \n",
      "3  {'alpha': 0.004, 'l1_ratio': 0.08, 'max_iter':...         0.111226   \n",
      "4  {'alpha': 0.004, 'l1_ratio': 0.1, 'max_iter': ...         0.111297   \n",
      "5  {'alpha': 0.004, 'l1_ratio': 0.3, 'max_iter': ...         0.112612   \n",
      "6  {'alpha': 0.005, 'l1_ratio': 0.08, 'max_iter':...         0.111263   \n",
      "7  {'alpha': 0.005, 'l1_ratio': 0.1, 'max_iter': ...         0.111410   \n",
      "8  {'alpha': 0.005, 'l1_ratio': 0.3, 'max_iter': ...         0.112939   \n",
      "\n",
      "   std_test_score  \n",
      "0        0.001924  \n",
      "1        0.001885  \n",
      "2        0.001567  \n",
      "3        0.001430  \n",
      "4        0.001407  \n",
      "5        0.001256  \n",
      "6        0.001392  \n",
      "7        0.001389  \n",
      "8        0.001249  \n"
     ]
    }
   ],
   "source": [
    "grid(ElasticNet()).grid_get(X_scaled,y_log,{'alpha':[0.0008,0.004,0.005],'l1_ratio':[0.08,0.1,0.3],'max_iter':[10000]})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ensemble Methods"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "class AverageWeight(BaseEstimator, RegressorMixin):\n",
    "    def __init__(self,mod,weight):\n",
    "        self.mod = mod\n",
    "        self.weight = weight\n",
    "        \n",
    "    def fit(self,X,y):\n",
    "        self.models_ = [clone(x) for x in self.mod]\n",
    "        for model in self.models_:\n",
    "            model.fit(X,y)\n",
    "        return self\n",
    "    \n",
    "    def predict(self,X):\n",
    "        w = list()\n",
    "        pred = np.array([model.predict(X) for model in self.models_])\n",
    "        # for every data point, single model prediction times weight, then add them together\n",
    "        for data in range(pred.shape[1]):\n",
    "            single = [pred[model,data]*weight for model,weight in zip(range(pred.shape[0]),self.weight)]\n",
    "            w.append(np.sum(single))\n",
    "        return w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "lasso = Lasso(alpha=0.0005,max_iter=10000)\n",
    "ridge = Ridge(alpha=60)\n",
    "svr = SVR(gamma= 0.0004,kernel='rbf',C=13,epsilon=0.009)\n",
    "ker = KernelRidge(alpha=0.2 ,kernel='polynomial',degree=3 , coef0=0.8)\n",
    "ela = ElasticNet(alpha=0.005,l1_ratio=0.08,max_iter=10000)\n",
    "bay = BayesianRidge()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "# assign weights based on their gridsearch score\n",
    "w1 = 0.02\n",
    "w2 = 0.2\n",
    "w3 = 0.25\n",
    "w4 = 0.3\n",
    "w5 = 0.03\n",
    "w6 = 0.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "weight_avg = AverageWeight(mod = [lasso,ridge,svr,ker,ela,bay],weight=[w1,w2,w3,w4,w5,w6])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.10807591709805182\n"
     ]
    }
   ],
   "source": [
    "score = rmse_cv(weight_avg,X_scaled,y_log)\n",
    "print(score.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "weight_avg = AverageWeight(mod = [svr,ker],weight=[0.5,0.5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.1073268166191054\n"
     ]
    }
   ],
   "source": [
    "score = rmse_cv(weight_avg,X_scaled,y_log)\n",
    "print(score.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Stacking"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "class stacking(BaseEstimator, RegressorMixin, TransformerMixin):\n",
    "    def __init__(self,mod,meta_model):\n",
    "        self.mod = mod\n",
    "        self.meta_model = meta_model\n",
    "        self.kf = KFold(n_splits=5, random_state=42, shuffle=True)\n",
    "        \n",
    "    def fit(self,X,y):\n",
    "        self.saved_model = [list() for i in self.mod]\n",
    "        oof_train = np.zeros((X.shape[0], len(self.mod)))\n",
    "        \n",
    "        for i,model in enumerate(self.mod):\n",
    "            for train_index, val_index in self.kf.split(X,y):\n",
    "                renew_model = clone(model)\n",
    "                renew_model.fit(X[train_index], y[train_index])\n",
    "                self.saved_model[i].append(renew_model)\n",
    "                oof_train[val_index,i] = renew_model.predict(X[val_index])\n",
    "        \n",
    "        self.meta_model.fit(oof_train,y)\n",
    "        return self\n",
    "    \n",
    "    def predict(self,X):\n",
    "        whole_test = np.column_stack([np.column_stack(model.predict(X) for model in single_model).mean(axis=1) \n",
    "                                      for single_model in self.saved_model]) \n",
    "        return self.meta_model.predict(whole_test)\n",
    "    \n",
    "    def get_oof(self,X,y,test_X):\n",
    "        oof = np.zeros((X.shape[0],len(self.mod)))\n",
    "        test_single = np.zeros((test_X.shape[0],5))\n",
    "        test_mean = np.zeros((test_X.shape[0],len(self.mod)))\n",
    "        for i,model in enumerate(self.mod):\n",
    "            for j, (train_index,val_index) in enumerate(self.kf.split(X,y)):\n",
    "                clone_model = clone(model)\n",
    "                clone_model.fit(X[train_index],y[train_index])\n",
    "                oof[val_index,i] = clone_model.predict(X[val_index])\n",
    "                test_single[:,j] = clone_model.predict(test_X)\n",
    "            test_mean[:,i] = test_single.mean(axis=1)\n",
    "        return oof, test_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Programs\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:66: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n",
      "D:\\Programs\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:66: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# must do imputer first, otherwise stacking won't work, and i don't know why.\n",
    "a = Imputer().fit_transform(X_scaled)\n",
    "b = Imputer().fit_transform(y_log.values.reshape(-1,1)).ravel()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "stack_model = stacking(mod=[lasso,ridge,svr,ker,ela,bay],meta_model=ker)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.10713511757775891\n"
     ]
    }
   ],
   "source": [
    "score = rmse_cv(stack_model,a,b)\n",
    "print(score.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_stack, X_test_stack = stack_model.get_oof(a,b,test_X_scaled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1458, 6), (1458, 410))"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_stack.shape, a.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_add = np.hstack((a,X_train_stack))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test_add = np.hstack((test_X_scaled,X_test_stack))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1458, 416), (1460, 416))"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_add.shape, X_test_add.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.10249025310475679\n"
     ]
    }
   ],
   "source": [
    "score = rmse_cv(stack_model,X_train_add,b)\n",
    "print(score.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Submission"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This is the final model I use\n",
    "stack_model = stacking(mod=[lasso,ridge,svr,ker,ela,bay],meta_model=ker)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "stacking(meta_model=KernelRidge(alpha=0.2, coef0=0.8, degree=3, gamma=None,\n",
       "                                kernel='polynomial', kernel_params=None),\n",
       "         mod=[Lasso(alpha=0.0005, copy_X=True, fit_intercept=True,\n",
       "                    max_iter=10000, normalize=False, positive=False,\n",
       "                    precompute=False, random_state=None, selection='cyclic',\n",
       "                    tol=0.0001, warm_start=False),\n",
       "              Ridge(alpha=60, copy_X=True, fit_intercept=True, max_iter...\n",
       "              ElasticNet(alpha=0.005, copy_X=True, fit_intercept=True,\n",
       "                         l1_ratio=0.08, max_iter=10000, normalize=False,\n",
       "                         positive=False, precompute=False, random_state=None,\n",
       "                         selection='cyclic', tol=0.0001, warm_start=False),\n",
       "              BayesianRidge(alpha_1=1e-06, alpha_2=1e-06, compute_score=False,\n",
       "                            copy_X=True, fit_intercept=True, lambda_1=1e-06,\n",
       "                            lambda_2=1e-06, n_iter=300, normalize=False,\n",
       "                            tol=0.001, verbose=False)])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stack_model.fit(a,b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = np.exp(stack_model.predict(test_X_scaled))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "result=pd.DataFrame({'Id':test.Id, 'SalePrice':pred})\n",
    "result.to_csv(\"submission.csv\",index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
